# coding:utf-8
from rest_framework import permissions

import logging

logger = logging.getLogger('django')


class AllowAny(permissions.BasePermission):

    def has_permission(self, request, view):
        return True


#
# class IsOwnerOrReadOnly(permissions.BasePermission):
#     """
#     只有数据的所有者可以进行危险操作 put /patch/delete
#     其他人只能只读
#     1. 如果当前是safe_method(get,options)
#     2. 查询当前请求的uuid 和 我们license对应查询出来的模型的uuid是否相符
#
#     get /account/<uuid>/info/
#     """
#
#     def has_permission(self, request, view):
#         # url_account_id = request.DATA.get('')
#         # 如果当前请求是安全方法内则直接返回
#         if request.method in SAFE_METHODS:
#             return True
#         # 如果非安全方法，我们解密token
#         auth_token = request.META.get('X-TOKEN', None)
#         if auth_token is None:
#             return False
#         # 解密token，提取paylaod中的license
#         payload = _decoding_payload(token=auth_token)
#         try:
#             # 使用license查询对应的模型
#             account = Account.objects.get(license=payload['license'])
#         except Account.DoesNotExist:
#             return False
#         # 判断当前需要操作的uuid 和 查询的模型的uuid是否相符
#         return url_account_id == account.id

#
# class IsOwner(permissions.BasePermission):
#     """
#     只有所有者可以进行数据的操作，其他人没有任何权限
#     查询当前请求的uuid 和 我们license对应查询出来的模型的uuid是否相符
#
#     get /account/<uuid>/
#     delete /account/<uuid>/
#     patch /account/<uuid>/
#     get /account/<uuid>/log/
#     """
#
#     def has_permission(self, request, view):
#         # url_account_id = request.DATA.get('')
#         # 无论何种请求都需要进行解密
#         auth_token = request.META.get('X-TOKEN', None)
#         if auth_token is None:
#             return False
#         # 解密token，提取paylaod中的license
#         payload = _decoding_payload(token=auth_token)
#         try:
#             # 使用license查询对应的模型
#             account = Account.objects.get(license=payload['license'])
#         except Account.DoesNotExist:
#             return False
#         # 判断当前需要操作的uuid 和 查询的模型的uuid是否相符
#         return url_account_id == account.id


class LoginRequire(permissions.BasePermission):
    """
    需要登录权限
    """

    def has_permission(self, request, view):
        # 传递token才可以访问
        auth_token = request.META.get('HTTP_X_TOKEN', None)
        if auth_token is None:
            return False
        # 如果你传递的token解密出来 你去修改其他人的信息
        return True
